The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not necessarily prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Load balancers are inserted on the path of the traffic between clients and servers making it possible to redirect client requests to the appropriate server and monitor the status of the application on the servers. Load balancing algorithms (predictors) provide load distribution and application high availability. Load balancers provide server health-management capabilities in the sense that they can detect a malfunction of a server or application and take appropriate decisions, such as putting a server out of a rotation pool, sending probes to get server status, or sending incident handling reports to administrative personnel.
Load balancers feature graceful shutdown capability, which enables a server to terminate its connections before being taken out of rotation pool, and “slowstart,” which avoids overwhelming a server with incoming connections when the server first enters the rotation pool. The shutdown and startup are based on the information collected on the status of the servers in a rotation.
Load balancers have very rudimentary mechanisms (predictors) to choose one server over another in a given rotation pool. Predictors like round robin and URL hash are computed entirely by the load balancer. Others, such as weighted round robin take into account a weight that is either statically configured or dynamically passed by a server agent such as DFP (Dynamic Feedback Protocol).
DFP empirically calculates a compound metric based on available CPU, memory utilization, disk space, queue length, concurrent connections and thresholds and passes it to the load balancer as a weight. This provides the load balancer with some insight into a server's ability. However, having a weight alone does not empower the load balancer to make sophisticated balancing decisions.
Based on the foregoing, there is a clear need for an improved method for load balancing. Furthermore, there is a need to provide load balancers with a richer set of information upon which to make load balancing decisions. While this section has been described in the context of load balancing of server resources, load balancing is applicable to other resources.